import {ElLoading, ElMessage} from "element-plus";
import XEUtils from "xe-utils";

/**
 * 直接将XEUtils工具返回
 */
export default XEUtils;

/**
 * 获取api的路径
 *  正常只有开发环境用到，当生产环境的config文件没有值时，默认使用本方法的值
 */
export const getApiUrl = (): string => {
    let apiUrl;

    const {VITE_API_ADDR, VITE_API_PORT, VITE_API_NAME, VITE_USE_MOCK} = import.meta.env;
    // const apiAddr = import.meta.env.VITE_API_ADDR;
    // onst apiPort = import.meta.env.VITE_API_PORT;

    apiUrl = VITE_API_ADDR + ":" + VITE_API_PORT;
    apiUrl = VITE_USE_MOCK === "true" ? apiUrl : apiUrl + "/"

    if (VITE_API_PORT === undefined) apiUrl = VITE_API_ADDR;

    return apiUrl;
}
/**
 * 二次封装信息提示框
 * @param message   - 要输出的信息
 * @param type      - 信息框类型
 * @param settings  - 自定义设置
 */
export function useMessage(message: string, type?: any, settings?: any) {
    ElMessage.closeAll();
    message = XEUtils.isEmpty(message) ? "请求失败！":message
    if (message === null){
        message = "数据处理异常！"
    }
    if (!XEUtils.isPlainObject(settings)) settings = {}
    if (XEUtils.isEmpty(type)) type = "success"

    let duration = 0
    switch (type) {
        case undefined:
        case null:
        case "success":
        case "warning":
            duration = 3000;
            break;
        case "error":
            duration = 0;
            ElMessage.closeAll();
            break;
        default:
            console.error("操作提示：类型错误（未定义）")
            return false;
    }
    let init = {
        showClose: true,
        duration,
        message,
        dangerouslyUseHTMLString: true,
        type,
        customClass: "elMessageDiv"
    }
    XEUtils.merge(init, settings)
    ElMessage(init);
}
/**
 * 二次封装错误信息
 * @param message   - 要输出的错误
 */
export function useErrorMessage(message: string) {
    useMessage(message, "error")
}